package club.xinghe.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @姚文斌
 * @create 2019-09-28 下午 7:46
 * 封装的的工具有：
 * 1.Date形式的日期转字符串 入参类型：new Date   返回类型：String
 * 2.字符串格式的时间转Date  入参类型：String   返回类型： new Date
 * 3.比较两个字符串型日期的大小  如果后面的比前面的大就返回true,否则返回false
 */
public class DateUtil {
    //设置为常量，提高可扩展性
    private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";

    private DateUtil() {
    }

    // 1.将日期转换成字符串
    public static String dateToString(Date date, String pattern) {
        // 判断pattern是否为空,利用工具类
        if ("".equals(pattern)) {
            // 如果为空，设置默认格式
            pattern = DEFAULT_PATTERN;
        }

        SimpleDateFormat sd = new SimpleDateFormat();
        sd.applyPattern(pattern);
        String res = sd.format(date);
        return res;
    }

    // 重载，只传一个参数
    public static String dateToString(Date date) {
        return DateUtil.dateToString(date, "");
    }

    // 2.字符串转成日期
    public static Date stringToDate(String str, String pattern) throws ParseException {
        //统一格式
        if(str.length()<12){
            str=str+" 24:00:00";
        }
        // 判断pattern是否为空,利用工具类
        if ("".equals(pattern)) {
            // 如果为空，设置默认格式
            pattern = DEFAULT_PATTERN;
        }

        SimpleDateFormat sd = new SimpleDateFormat();
        sd.applyPattern(pattern);
        Date res = sd.parse(str);
        return res;
    }
    //重载只传一个参数
    public static Date stringToDate(String s){
        Date date=null;
        try {
            date= stringToDate(s,"");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    //3.比较两个字符串型日期的大小
    public static boolean compareDate(String DATE1, String DATE2) {
        if(DATE1.length()<12){
            DATE1=DATE1+" 24:00:00";
        }
        if(DATE2.length()<12){
            DATE2=DATE2+" 24:00:00";
        }
        boolean result=false;//初始化布尔变量
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date dt1 = df.parse(DATE1);
            Date dt2 = df.parse(DATE2);
            if (dt1.getTime() < dt2.getTime()) {
                result= true;
            } else if (dt1.getTime() > dt2.getTime()) {
                result= false;
            } else {
                result= true;
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return result;
    }
}